package com.jdz.gxq.info.admin.role.service;

import java.util.List;
import java.util.Map;

import jp.terasoluna.fw.dao.QueryDAO;
import jp.terasoluna.fw.dao.UpdateDAO;

import com.jdz.gxq.info.admin.role.bo.Menu;

public class MenuServiceImpl implements MenuService {

	private QueryDAO queryDAO = null;

	private UpdateDAO updateDAO = null;

	/**
	 * Menu检索分页用，查询记录条数
	 * 
	 * @return
	 */
	public int getMenusCount(String title) {

		int totalCount = queryDAO.executeForObject("menu.getMenusCount", title,
				Integer.class);

		return totalCount;
	}

	/**
	 * Menu检索
	 * 
	 * @return
	 */
	public List<Menu> getMenus(Map<String, Object> params) {

		return queryDAO.executeForObjectList("menu.getMenus", params);
	}

	/**
	 * 追加Menu
	 * 
	 * @param menu
	 */
	public void insertMenu(Menu menu) {

		updateDAO.execute("menu.insertMenu", menu);
	}

	/**
	 * 更新Menu
	 * 
	 * @param menu
	 */
	public void updateMenu(Menu menu) {

		updateDAO.execute("menu.updateMenu", menu);
	}

	/**
	 * 通过id得到menu
	 * 
	 * @param id
	 * @return
	 */
	public Menu getMenuById(int id) {

		Menu menu = queryDAO.executeForObject("menu.getMenuById", id,
				Menu.class);

		return menu;
	}

	/**
	 * 删除Menu
	 * 
	 * @param menu
	 */
	public void deleteMenu(int id) {

		updateDAO.execute("menu.deleteMenuById", id);
	}

	/**
	 * 验证menuName是否重复 flag: 1 追加时验证 flag: 2 更新时验证
	 */
	public boolean checkMenuName(Menu paramMenu, int flag) {

		Menu menu = queryDAO.executeForObject("menu.getMenuByTitle",
				paramMenu.getTitle(), Menu.class);

		if (menu == null) {
			return true;
		}

		// 更新验证，查出来的数据是不是本身
		if (flag == 2) {

			if (menu.getId() == paramMenu.getId()) {
				return true;
			}
		}

		return false;
	}

	public void setQueryDAO(QueryDAO queryDAO) {
		this.queryDAO = queryDAO;
	}

	public void setUpdateDAO(UpdateDAO updateDAO) {
		this.updateDAO = updateDAO;
	}

}
